// 1.string
// 2.number
let num2 = 10

// 3.boolean
// 4.字面量
// 5.any 任意类型 设置了any就相当于是关闭了ts的类型检测 可以是任何的类型 就像是js代码一样
let num: any = 10
num = "hello"
num = true

// 6.unknow 未知类型 相当于是类型安全的any 也能赋值任何类型 还是一种数据类型 不能影响别人 跟any的区别是
// any可以影响别人 ts管不住any 超脱类型之外了
let myUn: unknown = "1111"
myUn = 12

let myStr: string = "aaaa";
// myStr = num
// myStr=myUn
console.log(myStr);


// 7.void一般用作函数的返回值 当函数没有返回值的时候就用void表示
function fun1(a: number): void {
    console.log(111);
}


//8.never 在抛出错误的时候 使用
function fun2(): never {
    throw new Error("抛出错误")
}


//9.数组
// 第一种方法  定义数组名称：类型[]=
let arr: number[] = [1, 2]
//数组类型是number类型
let arr2: (number | string)[] = [1, 2, "111"]
//定义数组类型 里面只能放number和string
let arr3: any[] = [1, 2, 3, "aaa"]
//数组类型是任意类型
arr3 = [true, 1, 3]

// 第二种 用范型定义 后期会讲

let arr4: Array<number | string> = [1, 2, 3, "111"]

// 第三种 接口
// 后期会讲到


// 10.元祖// tuple

// 规定数组的长度并且规定每一项的类型


let myTu: [string, number] = ["11", 11]

//11.枚举 enum

// enum 就是把这个数据可能出现的情况都列举出来
enum mySex {
    nan = 1,
    nv = 2,
    pl = 3,

}
enum myPush {
    keixng,
    anhuizhengwu,
    guoyao
}

console.log(mySex);

let obj = {
    name: "小明",
    age: 18,
    sex: mySex.nan,
    isPush: myPush.keixng
}
console.log(obj);



// 数据类型一共有12种
// string 
// number
// boolean
// any
// unknow
// void
// never
// enum 枚举
// tuple 元祖
// object 对象
// array 数组
// 字面量




